package org.opens.mybatisplus.service.impl.EnumObj3;

import com.google.common.base.Preconditions;
import org.opens.mybatisplus.dao.enumObj3.EnumObj3Dao;
import org.opens.mybatisplus.entity.enumObj3.EnumObj3;
import org.opens.mybatisplus.service.EnumObj3.EnumObj3Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class EnumObj3ServiceImpl implements EnumObj3Service {

    @Autowired
    private EnumObj3Dao enumObj3Dao;

    /**
     * 说明:
     *      1. mybatis在执行save方法时, 是可以直接返回mysql的自增id值的.
     *          - 需要在insert标签上加一些属性
     */
    @Override
    public EnumObj3 saveOrUpdate(EnumObj3 enumObj3, boolean fullUpdate) {
        Preconditions.checkNotNull(enumObj3, "操作对象不能为空");
        Integer saveId = null;
        if ( enumObj3.getId() == null ) {
            enumObj3Dao.save(enumObj3);
        } else {
            EnumObj3 dbData = enumObj3Dao.findById(enumObj3.getId());
            if ( dbData == null ) {
                enumObj3Dao.save(enumObj3);
            } else {
                if ( fullUpdate ) {
                    enumObj3Dao.fullUpdate(enumObj3);
                } else {
                    enumObj3Dao.updateNotNull(enumObj3);
                }
            }
        }
        return enumObj3Dao.findById(enumObj3.getId());
    }

    @Override
    public EnumObj3 findById(int id) {
        return enumObj3Dao.findById(id);
    }

    @Override
    public void deleteById(int id) {
        enumObj3Dao.deleteById(id);
    }
}
